/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controlador;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import negocio.Tipo_egreso;

/**
 *
 * @author AFDM
 */
public class ControladorTipo_egreso extends HttpServlet {


    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, ClassNotFoundException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);
        if ("Insertar".equals(request.getParameter("btreg")))
        {   
            ArrayList errores = new ArrayList();
            String codigo = request.getParameter("codigo");
            String nombre = new String(request.getParameter("nombre").getBytes("ISO-8859-1"),"UTF-8");
            String rete = request.getParameter("rete");
            String base = request.getParameter("base");
            
                  
        if(codigo.isEmpty() && nombre.isEmpty()&& rete.isEmpty()&& base.isEmpty())
           {
               errores.add("Todos los campos deben estar llenos");
           }
       
        else
        {
            if (codigo.isEmpty()) {
                errores.add("Falta ingresar código");
            }
            if (nombre.isEmpty()) {
                errores.add("Falta ingresar nombre");
            }
            if (rete.isEmpty()) {
                errores.add("Falta ingresar la retencón");
            }
        }
        
          int bas=0;
            double ret=0;
            try{
                bas=Integer.parseInt(base);
                ret=Double.parseDouble(rete);
            }catch(NumberFormatException e){
                errores.add("El valor debe ser numérico");
            }
            
            String mensaje;
            if (errores.isEmpty()) {/*Enviando constructor y enviando datos*/
                Tipo_egreso a = new Tipo_egreso(codigo, nombre,ret,bas);
                if (a.insertarTipo_egreso()) 
                {
                    session.setAttribute("codigo", "");
                    session.setAttribute("nombre", "");
                    session.setAttribute("rete", "");
                    session.setAttribute("base", "");
                    mensaje = "Perfil registrado con éxito";
                    request.setAttribute("mensaje", mensaje);
                   
                    
                    RequestDispatcher vista = request.getRequestDispatcher("tipo_egreso.jsp");
                    vista.forward(request, response);
                } 
                else 
                {
                    mensaje = "El código del perfil ya existe";
                    request.setAttribute("mensaje", mensaje);
                    RequestDispatcher vista = request.getRequestDispatcher("tipo_egreso.jsp");
                    vista.forward(request, response);
                }
            } 
            else
            {
           session.setAttribute("codigo", codigo);
           session.setAttribute("nombre", nombre);
           session.setAttribute("rete", rete);
           session.setAttribute("base", base);
           
           mensaje = "";
           request.setAttribute("mensaje", mensaje);
           request.setAttribute("errores", errores);
           
           RequestDispatcher vista = request.getRequestDispatcher("tipo_egreso.jsp");
           vista.include(request, response);
           
            }
        }
        if ("Eliminar".equals(request.getParameter("bteli"))) {
            String rete = request.getParameter("rete");
            String codigo = request.getParameter("codigo").trim();
            String nombre = request.getParameter("nombre");
            String base = request.getParameter("base");
            ArrayList errores = new ArrayList();  
            
             
            
           if(codigo.isEmpty() || nombre.isEmpty() || rete.isEmpty())
           {
               errores.add("Para eliminar debe consultar");
           }
        
            int bas=0;
            double ret=0;
            try{
                bas=Integer.parseInt(base);
                ret=Double.parseDouble(rete);
            }catch(NumberFormatException e){
                errores.add("El valor debe ser numérico");
            }
            
             String mensaje;
            if (errores.isEmpty()){ 
            Tipo_egreso a = new Tipo_egreso();
            a.eliminarTipo_egreso(codigo);  
            session.setAttribute("codigo","");
            session.setAttribute("nombre","");
            session.setAttribute("rete","");
            session.setAttribute("base","");
            
            mensaje = "Registro eliminado con éxito";
            request.setAttribute("mensaje", mensaje);
            RequestDispatcher vista = request.getRequestDispatcher("tipo_egreso.jsp");         
            vista.forward(request, response);
          }
            else
            {
           session.setAttribute("codigo", codigo);
           session.setAttribute("nombre", nombre);
           session.setAttribute("rete", rete);
           session.setAttribute("base", base);
           
           mensaje = "";
           request.setAttribute("mensaje", mensaje);
           request.setAttribute("errores", errores);
           RequestDispatcher vista = request.getRequestDispatcher("tipo_egreso.jsp");
           vista.include(request, response);
           
            }
        }

        else if ("Modificar".equals(request.getParameter("btmod"))) {
            
            String codigo = request.getParameter("codigo").trim();
            String nombre = request.getParameter("nombre");
            String rete = request.getParameter("rete");
            String base = request.getParameter("base");

            
            ArrayList errores = new ArrayList();  
            
             
             if(codigo.isEmpty() || nombre.isEmpty()|| rete.isEmpty())
           {
               errores.add("Para modificar debe consultar");
           }
       
               int bas=0;
           double ret=0;
            try{
                bas=Integer.parseInt(base);
                ret=Double.parseDouble(rete);
            }catch(NumberFormatException e){
                errores.add("El valor debe ser numérico");
            }
          
           String mensaje;
          if (errores.isEmpty()){
              
            
            Tipo_egreso a = new Tipo_egreso(codigo, nombre,ret,bas);
            a.modificarTipo_egreso();
            session.setAttribute("codigo","");
            session.setAttribute("nombre","");
            session.setAttribute("rete","");
            session.setAttribute("base","");
            mensaje = "Registro modificado con éxito"; 
            request.setAttribute("mensaje", mensaje);
            RequestDispatcher vista = request.getRequestDispatcher("tipo_egreso.jsp");
            vista.forward(request, response);
          }
          else
            {
           session.setAttribute("codigo", codigo);
           session.setAttribute("nombre", nombre);
           session.setAttribute("rete", rete);
           session.setAttribute("base", base);
           
           mensaje = "";
           request.setAttribute("mensaje", mensaje);
           request.setAttribute("errores", errores);
           RequestDispatcher vista = request.getRequestDispatcher("tipo_egreso.jsp");
           vista.include(request, response);
           
            }
            
        }   
        else if ("Consultar".equals(request.getParameter("btcon"))) {
              String codigo = request.getParameter("codigo").trim();
               ArrayList errores = new ArrayList();   
               
             if(codigo.isEmpty())
           {
               errores.add("Falta ingresar el código");
           }
             
                //String mensaje;
            if (errores.isEmpty()){
                Tipo_egreso a = new Tipo_egreso();
                ArrayList lista = (ArrayList)a.buscarTipo_egreso(codigo);
                //mensaje = "Registro consultado con éxito";
            //request.setAttribute("mensaje", mensaje);
                request.setAttribute("lista", lista);
                
                for(int i=0; i<lista.size();i++){
                    a=(Tipo_egreso)lista.get(i);
                
                    session.setAttribute("codigo",a.getCodigo());
                    session.setAttribute("nombre",a.getNombre());
                    session.setAttribute("rete",Double.toString(a.getRete()));
                    session.setAttribute("base",Integer.toString(a.getBase()));
                    
                    
                }
                RequestDispatcher vista = request.getRequestDispatcher("tipo_egreso.jsp");
                vista.forward(request, response);
            }else{
                String mensaje = "";
                request.setAttribute("mensaje", mensaje);
                request.setAttribute("errores", errores);

                RequestDispatcher vista = request.getRequestDispatcher("tipo_egreso.jsp");
                vista.include(request, response);
            }

        }
       
        
    }      
           
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">

    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(ControladorTipo_egreso.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(ControladorTipo_egreso.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
